package com.hxd.otc.api;

import com.hxd.otc.base.BaseBean;
import com.hxd.otc.module.convenience.bean.ChooseHydropowerCityBean;
import com.hxd.otc.module.convenience.bean.ConvenienceBannerBean;
import com.hxd.otc.module.convenience.bean.ConvenienceOrderBean;
import com.hxd.otc.module.convenience.bean.ConvenienveHistoryBean;
import com.hxd.otc.module.convenience.bean.NorGoodsBean;
import com.hxd.otc.module.convenience.bean.OrderFinishedBean;
import com.hxd.otc.module.convenience.bean.PaymentMethodBean;
import com.hxd.otc.module.convenience.bean.PhoneLocationBean;
import com.hxd.otc.module.convenience.bean.RateBean;
import com.hxd.otc.module.convenience.bean.RefuelingServiceBean;
import com.hxd.otc.module.convenience.bean.WaterCoalBillBean;
import com.hxd.otc.module.my.bean.BaseListBean;

import java.util.ArrayList;

import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by lzy on 2018/12/12 0012.
 * description ${便民服务模块API}
 */
public interface IConvenienceApi {
    /**
     * 获取付款方式列表
     */
    @GET("bm/param/list")
    Observable<BaseBean<ArrayList<PaymentMethodBean>>> getPaymentMethodList();

    /**
     * 查询归属地
     *
     * @param phone
     */
    @GET("bm/phone/location")
    Observable<BaseBean<PhoneLocationBean>> getPhoneLocation(@Query("phone") String phone);

    /**
     * 商品列表
     *
     * @param moduleId
     */
    @GET("bm/goods/list")
    Observable<BaseBean<ArrayList<NorGoodsBean>>> getGoodsList(@Query("moduleId") String moduleId);

    /**
     * 商品列表
     *
     * @param parentId 0:便民服务列表，2.获取加油服务列表
     */
    @GET("bm/module/list")
    Observable<BaseBean<ArrayList<RefuelingServiceBean>>> getModuleList(@Query("parentId") String parentId);

    /**
     * 获取Banner集合
     *
     * @param positionType
     */
    @GET("bm/banner/list")
    Observable<BaseBean<ArrayList<ConvenienceBannerBean>>> getBannerList(@Query("positionType") int positionType);

    /**
     * 查询水电费欠费
     */
    @GET("bm/waterCoal/arrearage")
    Observable<BaseBean<ArrayList<WaterCoalBillBean>>> getArrearage(@Query("account") String account, @Query("itemId") String itemId);

    /**
     * 获取Banner集合
     */
    @GET("bm/waterCoal/location")
    Observable<BaseBean<ArrayList<ChooseHydropowerCityBean>>> getLocation(@Query("province") String province,
                                                                          @Query("city") String city,
                                                                          @Query("rechargeType") String rechargeType);

    /**
     * 获取历史记录
     * 业务类型: 1 手机充值 2油卡 3、生活费 4 视频卡
     *
     * @param flagType
     */
    @GET("bm/history/list0")
    Observable<BaseBean<ArrayList<ConvenienveHistoryBean>>> getHistoryList(@Query("flagType") String flagType);

    /**
     * 生活费
     *
     * @param businessType
     */
    @GET("bm/history/list1")
    Observable<BaseBean<ArrayList<ConvenienveHistoryBean>>> getHydropowerHistoryList(@Query("businessType") String businessType);

    @GET("bm/order/list")
    Observable<BaseBean<BaseListBean<ConvenienceOrderBean>>> getOrderList(@Query("size") int showCount, @Query("current") int currentPage);


    @POST("bm/history/delete")
    Observable<BaseBean> deleteHistory(@Query("id") String id);

    @POST("bm/history/deleteFlagType")
    Observable<BaseBean> deleteFlagType(@Query("flagType") String flagType);

    /**
     * @param goodsId         商品Id（业务类型为话费，视频卡，油卡，必传）
     * @param moduleId        板块Id：（业务类型为水费电费，必传）
     * @param itemId          水费电费缴费itemId（业务类型为水费电费，必传）
     * @param realSymbol      支付币种
     * @param rechargeAccount 缴费卡号
     * @param itemNum         水费金额（业务类型为水费电费，必传）
     * @param gasCardTel      持卡人手机号（业务类型为油卡，必传）
     * @param gasCardName     持卡人姓名（业务类型为油卡，必传）
     * @param billCycle       账期，查询账户信息若有返回（billCycle字段）则必须要传入，否则充值失败。（业务类型为水费电费，选传）
     * @param contractNo      合同号（除江苏地区，其他地区需要上传合同编号），千米移动货源必需，普通外挂通过与电信翼支付通道不需要传入（业务类型为水费电费，选传）
     * @param businessType    便民类型
     * @param code            验证码
     */
    @POST("bm/payOrder")
    Observable<BaseBean<OrderFinishedBean>> payOrder(@Query("goodsId") String goodsId,
                                                     @Query("moduleId") String moduleId,
                                                     @Query("itemId") String itemId,
                                                     @Query("realSymbol") String realSymbol,
                                                     @Query("rechargeAccount") String rechargeAccount,
                                                     @Query("itemNum") String itemNum,
                                                     @Query("gasCardTel") String gasCardTel,
                                                     @Query("gasCardName") String gasCardName,
                                                     @Query("billCycle") String billCycle,
                                                     @Query("contractNo") String contractNo,
                                                     @Query("businessType") String businessType,
                                                     @Query("priceUnit") String priceUnit,
                                                     @Query("remark") String remark,
                                                     @Query("address") String address,
                                                     @Query("code") String code);


    @GET("bm/order/rate")
    Observable<BaseBean<RateBean>> getRate(@Query("sellPrice") String sellPrice,
                                           @Query("priceUint") String priceUint, @Query("symbol") String symbol);

    /**
     * 修改banner点击量
     *
     * @param bannerId
     */
    @POST("bm/banner/update")
    Observable<BaseBean<Object>> bannerUpdate(@Query("bannerId") String bannerId);

    /**
     * 查询便民订单详情
     *
     * @param orderId
     */
    @GET("bm/order/findById")
    Observable<BaseBean<ConvenienceOrderBean>> getOrderDetail(@Query("orderId") String orderId);
}
